#if ! defined( PECA_ )
#define PECA_

/***************************************************************************
*
*  $MCD Módulo de definição: PEC  Peça do jogo de damas
*
*  Arquivo gerado:              PECA.H
*  Letras identificadoras:      PEC
*
*  Projeto: INF 1301 - Trabalho 2 - Controle do Jogo de Damas
*  Autores: ib - Igor Blumberg
*
*  $HA Histórico de evolução:
*     Versão	  Autor			Data		   Observações
*       1          ib        03/maio/2010  início desenvolvimento
*
*  $ED Descrição do módulo
*     Implementa as pecas do jogo de damas
*     Podem existir n peças em operação simultaneamente.
*     As peças possuem uma cor e um estado.
*     A cor pode ser BRANCA ou PRETA.
*     O estado pode ser NORMAL ou RAINHA
*
***************************************************************************/

#if defined( PECA_OWN )
   #define PECA_EXT
#else
   #define PECA_EXT extern
#endif

/***** Declarações exportadas pelo módulo *****/

/* Tipo referência para um tabuleiro */

typedef struct PEC_tagPeca * PEC_tppPeca ;

/***********************************************************************
*
*  $TC Tipo de dados: PEC Condições de retorno
*
*
*  $ED Descrição do tipo
*     Condições de retorno das funções da Peça
*
***********************************************************************/
   typedef enum {

         PEC_CondRetOK ,
               /* Concluiu corretamente */

         TAB_CondRetNaoAchou ,
               /* Não achou o elemento procurado */

         TAB_CondRetFaltouMemoria
               /* Faltou memória ao tentar criar um elemento do Tabuleiro */

   } PEC_tpCondRet ;

/***********************************************************************
*
*  $FC Função: Pec  &Criar Peça branca
*
*  $ED Descrição da função
*     Cria uma peça branca
*     
*  $EP Parâmetros
*     result - ponteiro para o tabuleiro de onde se quer as origens
*
*  $FV Valor retornado
*     TAB_CondRetOK    - criou sem problemas
*
***********************************************************************/
PEC_tpCondRet Cria_peca_branca(void);

/***********************************************************************
*
*  $FC Função: Pec  &Criar Peça preta
*
*  $ED Descrição da função
*     Cria uma peça preta
*     
*  $FV Valor retornado
*     Peca *result
*     PECA_NAO_CRIADA
*
***********************************************************************/
PEC_tpCondRet Cria_peca_preta(void);
/***********************************************************************
*
*  $FC Função: LIS  &Promover Peca
*
*  $ED Descrição da função
*     Promove o status da Peca para "DAMA"
*
*  $EP Parâmetros
*     p_entrada - peça cujo status será alterado para DAMA
*
*  $FV Valor retornado
*     PECA_PROMOVIDA
*     
*
***********************************************************************/

PEC_tpCondRet Promove_peca(Peca* p_entrada);

/***********************************************************************
*
*  $FC Função: LIS  &Destruir Peca
*
*  $ED Descrição da função
*     Destroi a peça 
*
*  $EP Parâmetros
*     p_entrada - peça que será destruida
*
*  $FV Valor retornado
*     PECA_EXCLUIDA     
*
***********************************************************************/
void Destroi_peca(Peca* p_entrada);


#undef PECA_EXT

/********** Fim do módulo de definição: PEC  Peça de damas **********/

#endif


